package net.vkits.common.push.umeng;

import java.time.Instant;
import java.util.HashMap;

/**
 * Created by ethan-liu on 2016/11/23.
 */
public class UmengMsg {
    // 必填 应用唯一标识
    private String appkey;
    // 必填 时间戳，10位或者13位均可，时间戳有效期为10分钟
    private String timestamp = Long.toString(Instant.now().toEpochMilli());
    /*必填 消息发送类型,其值可以为:
    unicast-单播
    listcast-列播(要求不超过500个device_token)
    filecast-文件播(多个device_token可通过文件形式批量发送）
    broadcast-广播
    groupcast-组播(按照filter条件筛选特定用户群, 具体请参照filter参数)
    customizedcast(通过开发者自有的alias进行推送),
    包括以下两种case:
    - alias: 对单个或者多个alias进行推送
    - file_id: 将alias存放到文件后，根据file_id来推送*/
    private MessageSendType type;
    /*可选 设备唯一表示
    当type=unicast时,必填, 表示指定的单个设备
    当type=listcast时,必填,要求不超过500个,
    多个device_token以英文逗号间隔*/
    private String device_tokens;
    /*可选 当type=customizedcast时，必填，alias的类型,
    alias_type可由开发者自定义,开发者在SDK中
    调用setAlias(alias, alias_type)时所设置的alias_type*/
    private String alias_type = null;
    /*可选 当type=customizedcast时, 开发者填写自己的alias。
    要求不超过50个alias,多个alias以英文逗号间隔。
    在SDK中调用setAlias(alias, alias_type)时所设置的alias*/
    private String alias = null;
    /*可选 当type=filecast时，file内容为多条device_token,
    device_token以回车符分隔
    当type=customizedcast时，file内容为多条alias，
    alias以回车符分隔，注意同一个文件内的alias所对应
    的alias_type必须和接口参数alias_type一致。
    注意，使用文件播前需要先调用文件上传接口获取file_id,
    具体请参照"2.4文件上传接口"*/
    private String file_id = null;
    // 可选 终端用户筛选条件,如用户标签、地域、应用版本以及渠道等,具体请参考附录G。
    private HashMap<String, String> filter = new HashMap<>();
    /*可选 正式/测试模式。测试模式下，只会将消息发给测试设备。
    测试设备需要到web上添加。
    Android: 测试设备属于正式设备的一个子集。*/
    private String production_mode = null;
    // 可选 发送消息描述，建议填写。
    private String description = null;
    /*可选 开发者自定义消息标识ID, 开发者可以为同一批发送的多条消息
    提供同一个thirdparty_id, 便于友盟后台后期合并统计数据。*/
    private String thirdparty_id = null;

    public String getAppkey() {
        return appkey;
    }

    public void setAppkey(String appkey) {
        this.appkey = appkey;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public String getDevice_tokens() {
        return device_tokens;
    }

    public void setDevice_tokens(String device_tokens) {
        this.device_tokens = device_tokens;
    }

    public String getAlias_type() {
        return alias_type;
    }

    public void setAlias_type(String alias_type) {
        this.alias_type = alias_type;
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }

    public String getFile_id() {
        return file_id;
    }

    public void setFile_id(String file_id) {
        this.file_id = file_id;
    }

    public String getProduction_mode() {
        return production_mode;
    }

    public void setProduction_mode(String production_mode) {
        this.production_mode = production_mode;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getThirdparty_id() {
        return thirdparty_id;
    }

    public void setThirdparty_id(String thirdparty_id) {
        this.thirdparty_id = thirdparty_id;
    }

    public MessageSendType getType() {
        return type;
    }

    public void setType(MessageSendType type) {
        this.type = type;
    }

    public HashMap<String, String> getFilter() {
        return filter;
    }

    public void setFilter(HashMap<String, String> filter) {
        this.filter = filter;
    }
}
